fn add<T: std::ops::Add<Output = T>>(a:T, b:T) -> T {
	a + b
}

/* 
fn display_array(arr: &[i32]) {
	println!("{:?}", arr);
}

fn display_array<T: std::fmt::Debug>(arr: &[T]) {
	println!("{:?}", arr);
}*/

fn display_array<T: std::fmt::Debug, const N: usize>(arr: &[T; N]) {
	println!("{:?}", arr);
}

fn main() {
	println!("add i8: {}", add(2i8, 3i8));
	println!("add i32: {}", add(20, 30));
	println!("add f64: {}", add(1.23, 1.23));

	let arr: [String; 3] = ["how".to_string(), "are".to_string(), "you".to_string()];
	display_array(&arr);
	println!("{:?}", arr);

	let arr: [i32; 2] = [4, 5];
	display_array(&arr);
}
